package com.thread.sync.sync05;

//客户端
public class FutrueClient {
    /**
     * Future设计模式
     */
    public DateService request(String param) {
        //先创建一个代理对象（Data接口的实现类）先返回给发送请求的客户端，
        //告诉他请求已经接收到，可以做其他的事情
        final FutrueDateServiceImpl futureData = new FutrueDateServiceImpl();
        //再启动一个新的线程，去加载真实的数据，传递给这个代理对象
        new Thread(() -> {
            RealDateServiceImpl realDate = new RealDateServiceImpl(param);
            futureData.setRealData(realDate);
        }).start();
        //返回包装类对象 当需要获取数据的时候在把真是数据传递给用户,如果没有获取到就有一直阻塞,直到获取为止
        return futureData;
    }
}
